Міністерство освіти України
Національний університет «Львівська політехніка»
Кафедра автоматизованих систем управління
Методичка до лабораторних з ООП
Лабораторна робота №5з курсу
«Об'єктно-орієнтоване програмування»
Львів 2011
Лабораторна робота № 5
Створення проекту з використанням технології Drag&Drop та контекстних підказок
Мета: навчитися використовувати можливості технології Drag&Drop у прикладних програмах, додавати до програм контекстні підказки.
Порядок роботи:
Користуючись рекомендованою літературою до лабораторної роботи створити проект відповідно до індивідуального завдання.
Оформити звіт для захисту лабораторної роботи за зразком
назва роботи
мета роботи
порядок роботи
короткі теоретичні відомості
алгоритм розв’язку задачі
тексти відповідних модулів проекту
аналіз отриманих результатів та висновки
Питання для самоконтролю
1. У чому полягає технологія Drag&Drop? Наведіть приклади її застосування.
2. Які властивості та події об'єктів Delphi використовуються при програмуванні технології
Drag&Drop?
3. Яке призначення обробників подій OnDragOver та OnDragDrop?
4. Як перевірити можливість передачі інформації між об'єктами?
5. Що таке "контекстна підказка", як передбачити можливість доступу до неї в ужитку?
Теоретичні відомості
Технологія Drag&Drop
Технологія Drag&Drop полягає у використанні у Windows-програмах перетаскування за допомогою миші інформації з одного об'єкта (джерела) в інший (приймач). Можна переміщати файли між папками, переміщати самі папки і т. ін.
Усі властивості, методи та події, пов'язані з технологією Drag&Drop, визначені в класі TControl, що є базовим класом (прабатьком) усіх візуальних компонент Delphi. Тому вони є спільними для всіх компонент.
Початок перетаскування визначається властивістю DragMode, що може встановлюватися в процесі проектування чи програмно рівною dmManual або dmAutomatic. Значення dmAutomatic (автоматичне) визначає негайний початок процесу перетаскування при натисканні користувачем кнопки миші над об'єктом. Однак у цьому випадку подія OnMouseDown, пов'язана з натисканням користувачем кнопки миші, для цього об'єкта взагалі не настає.
Значення dmManual (ручне) говорить про те, що початок процесу перетаскування визначає програміст. Для цього він повинен у відповідний момент викликати метод BeginDrag. Наприклад, він може помістити виклик цієї функції в обробник події OnMouseDown, що настає в момент натискання кнопки миші. У цьому обробнику можна попередньо перевірити якісь умови (режим роботи ужитку, натискання тих чи інших кнопок миші і додаткових клавіш) і при виконанні цих умов викликати BeginDrag.
Нехай, наприклад, процес перетаскування повинен розпочатися, якщо користувач натиснув ліву кнопку миші та клавішу Alt над списком ListBox1. Тоді властивість DragMode цього об'єкта слід установити в dmManual, а його обробник події OnMouseDown може мати вигляд:
procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if (Button = mbLeft) and (ssAlt in Shift)
then (Sender as TControl).BeginDrag(false);
end;
Параметр Button обробника події OnMouseDown показує, яка кнопка миші була натиснута, а параметр Shift є множиною, що містить позначення натиснутих у цей момент кнопок миші і допоміжних клавіш клавіатури. Якщо натиснута ліва кнопка миші та клавіша Alt, то викликається метод BeginDrag даного об'єкта (Sender).
У функцію BeginDrag передається значення False. Це означає, що процес перетаскування почнеться не одразу , а тільки після того, як користувач зрушить мишу з натиснутою при цьому кнопкою. Це дозволяє відрізнити просте натискання клавіші миші від початку перетаскування.
Якщо ж передати в BeginDrag значення True, то перетаскування почнеться негайно.
Коли почався процес перетаскування, звичайний вигляд курсору змінюється. Поки він переміщається над формою чи об'єктами на формі, які не можуть прийняти інформацію, він звичайно має вигляд crNoDrop. Якщо ж він переміщається над об'єктом, що готовий прийняти ...